home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src.arc / ASYVEC.ASM < prev    next >
Assembly Source File  |  1989-03-20  |  3KB  |  151 lines

  1.     .MODEL    MEMMOD,C
  2.     %MACS
  3.  
  4.     extrn    doret:proc
  5.     extrn    asyint:far
  6.  
  7.     .DATA
  8.     extrn    Sssave:word
  9.     extrn    Spsave:word
  10.     extrn    Stktop
  11.  
  12.     .CODE
  13. dbase    dw    @Data
  14.  
  15. ; asy0vec - asynch channel 0 interrupt handler
  16.     public    asy0vec
  17.     label    asy0vec    far
  18.     push    ds        ; save on user stack
  19.     mov    ds,cs:dbase    ; establish interrupt data segment
  20.  
  21.     mov    Sssave,ss    ; stash user stack context
  22.     mov    Spsave,sp
  23.  
  24.     mov    ss,cs:dbase
  25.     lea    sp,Stktop
  26.  
  27.     push    ax        ; save user regs on interrupt stack
  28.     push    bx
  29.     push    cx
  30.     push    dx
  31.     push    bp
  32.     push    si
  33.     push    di
  34.     push    es
  35.  
  36.     mov    ax,0        ; arg for service routine
  37.     push    ax
  38.     call    asyint
  39.     pop    ax
  40.     jmp    doret
  41.  
  42. ; asy1vec - asynch channel 1 interrupt handler
  43.     public    asy1vec
  44.     label    asy1vec    far
  45.     push    ds        ; save on user stack
  46.     mov    ds,cs:dbase    ; establish interrupt data segment
  47.  
  48.     mov    Sssave,ss    ; stash user stack context
  49.     mov    Spsave,sp
  50.  
  51.     mov    ss,cs:dbase
  52.     lea    sp,Stktop
  53.  
  54.     push    ax        ; save user regs on interrupt stack
  55.     push    bx
  56.     push    cx
  57.     push    dx
  58.     push    bp
  59.     push    si
  60.     push    di
  61.     push    es
  62.  
  63.     mov    ax,1        ; arg for service routine
  64.     push    ax
  65.     call    asyint
  66.     pop    ax
  67.     jmp    doret
  68.  
  69. ; asy2vec - asynch channel 2 interrupt handler
  70.     public    asy2vec
  71.     label    asy2vec far
  72.     push    ds        ; save on user stack
  73.     mov    ds,cs:dbase    ; establish interrupt data segment
  74.  
  75.     mov    Sssave,ss    ; stash user stack context
  76.     mov    Spsave,sp
  77.  
  78.     mov    ss,cs:dbase
  79.     lea    sp,Stktop
  80.  
  81.     push    ax        ; save user regs on interrupt stack
  82.     push    bx
  83.     push    cx
  84.     push    dx
  85.     push    bp
  86.     push    si
  87.     push    di
  88.     push    es
  89.  
  90.     mov    ax,2        ; arg for service routine
  91.     push    ax
  92.     call    asyint
  93.     pop    ax
  94.     jmp    doret
  95.  
  96. ; asy3vec - asynch channel 3 interrupt handler
  97.     public    asy3vec
  98.     label    asy3vec far
  99.     push    ds        ; save on user stack
  100.     mov    ds,cs:dbase    ; establish interrupt data segment
  101.  
  102.     mov    Sssave,ss    ; stash user stack context
  103.     mov    Spsave,sp
  104.  
  105.     mov    ss,cs:dbase
  106.     lea    sp,Stktop
  107.  
  108.     push    ax        ; save user regs on interrupt stack
  109.     push    bx
  110.     push    cx
  111.     push    dx
  112.     push    bp
  113.     push    si
  114.     push    di
  115.     push    es
  116.  
  117.     mov    ax,3        ; arg for service routine
  118.     push    ax
  119.     call    asyint
  120.     pop    ax
  121.     jmp    doret
  122.  
  123. ; asy4vec - asynch channel 4 interrupt handler
  124.     public    asy4vec
  125.     label    asy4vec far
  126.     push    ds        ; save on user stack
  127.     mov    ds,cs:dbase    ; establish interrupt data segment
  128.  
  129.     mov    Sssave,ss    ; stash user stack context
  130.     mov    Spsave,sp
  131.  
  132.     mov    ss,cs:dbase
  133.     lea    sp,Stktop
  134.  
  135.     push    ax        ; save user regs on interrupt stack
  136.     push    bx
  137.     push    cx
  138.     push    dx
  139.     push    bp
  140.     push    si
  141.     push    di
  142.     push    es
  143.  
  144.     mov    ax,4        ; arg for service routine
  145.     push    ax
  146.     call    asyint
  147.     pop    ax
  148.     jmp    doret
  149.  
  150.     end
  151.